PostgreSQL 安全管理 数据脱敏 Anonymizer 简介

1 背景知识

PostgreSQL Anonymizer 是一个扩展插件,用于掩盖或替换 PostgreSQL 数据库中的个人可识别信息或商业敏感数据,简单来讲来讲是一种脱敏工具。

1.1 数据脱敏的适用场景

迁移场景 数据迁移至 PostgreSQL 数据库后,进行功能测试、性能测试、安全测试时,脱敏可以防止测试环境的权限体系不完善而造成的数据泄露,从而减少在项目工程中出现的安全问题。
测试场景 数据脱敏可以制造伪部分数据用于测试环境的验证(这里的伪数据是指具有一定的真实性的数据)。
测试验证 开发人员需要通过查看数据变化进而验证程序功能和流程的正确性,但又不能对开发人员展示真实数据。。

生产环境
生产环境
测试环境
测试环境
迁移场景
迁移场景
测试场景
测试场景
测试验证
测试验证
数据脱敏
数据脱敏
ID NO
ID NO
123456199003242525
123456199003242525
123456198806240325
123456198806240325
123456197806240529
123456197806240529
ID NO
ID NO
12**************25
12**************25
12**************25
12**************25
12**************29
12**************29
数据脱敏的应用场景
数据脱敏的应用场景
APPLICATION
APPLICATION
APPLICATION
APPLICATION
Text is not SVG - cannot display

这里举个例子,用户在银行 APP 上查询个人信息时,使用 Anonymizer 可以隐藏身份证信息中间几位数字,防止身份证信息意外泄露。

sys_anon
sys_anon
ID NO
ID NO
123456199003242525
123456199003242525
123456198806240325
123456198806240325
123456197806240529
123456197806240529
个人信息信息
姓    名:     王 * 通
身份证:12***********29
个人信息信息姓    名:     王 * 通身份证:12***********...
CARRIER
CARRIER
11:55PM
11:55PM
98%
98%
Bank Applicaton
Bank Applicaton
DATABASE
DATABASE
Text is not SVG - cannot display

2 脱敏种类

PostgreSQL Anonymizer 可以对数据进行三种脱敏方式,分别是:

  1. 静态脱敏 (Static Masking)
  2. 动态脱敏(Dynamic Masking)
  3. 导出脱敏(Anonymous Dumps )
SYS_DUMP
SYS_DUMP
SYS_DUMP
SYS_DUMP
sys_anon
sys_anon
数据在备份过程中进行脱敏
数据在备份过程中进行脱敏
备份脱敏
备份脱敏
Table
1
1
Value 1
Value 1
2
2
Value 2
Value 2
3
3
Value 3
Value 3
Text is not SVG - cannot display

3 脱敏函数

此插件还提供各式各样的脱敏函数用于不同的场景的脱敏需求,读者可以参考官方文档 选取合适的函数:

  1. 随机脱敏(randomization)
  2. 伪造脱敏(faking)
  3. 部分脱敏(partial scrambling)
  4. 顺序错乱脱敏(shuffling)
  5. 噪音脱敏(noise)

除了脱敏(Masking) 这种方法,还可以在数据分析与统计中使用泛化函数。

最后,这个扩展还提供了一个 detection 函数,用于探测表中那一列可能需要脱敏。

4 安装与配置

Anonymizer 安装与配置
Anonymizer 参数与配置

5 脱敏规则与函数

Anonyimizer 脱敏规则
Anonymizer 脱敏函数
Anonymizer 泛化脱敏(Generalization)
Anonymizer 默认策略脱敏(Privacy By Default)
Anonymizer 抽样脱敏(Privacy By Default)
Anonymizer 自动脱敏(Searching for Identifiers)
Anonymizer 自定义伪造数据
Anonymizer 术语

6 参考链接

Dalibo Labs
PostgreSQL Anonymizer (postgresql-anonymizer.readthedocs.io)